package com.system.user;

import akka.actor.ActorRef;
import akka.actor.ActorSystem;
import com.system.user.config.akka.SpringExtension;
import com.system.user.entity.TestEntity;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TEst {

    public static void main(String[] args) throws IOException {
//        System.out.print(md5AndSha("Aa123456361833e63b1e41a5ba72579fb4face16"));
//        System.out.println(test("C-制造业,13-农副食品加工业,14-食品制造业,15-酒、饮料和精制茶制造\n" +
//                "业,16-烟草制品业,17-纺织业,18-纺织服装、服饰业,19-皮革、毛皮、羽毛及其制\n" +
//                "品和制鞋业,20-木材加工和木、竹、藤、棕、草制品业,21-家具制造业,22-造纸\n" +
//                "和纸制品业,23-印刷和记录媒介复制业,24-文教、工美、体育和娱乐用品制造业\n" +
//                ",25-石油加工、炼焦和核燃料加工业,26-化学原料和化学制品制造业,27-医药制\n" +
//                "造业,28-化学纤维制造业,29-橡胶和塑料制品业,30-非金属矿物制品业,31-黑色金\n" +
//                "属冶炼和压延加工业,32-有色金属冶炼和压延加工业,33-金属制品业,34-通用设\n" +
//                "备制造业,35-专用设备制造业,36-汽车制造业,37-铁路、船舶、航空航天和其他\n" +
//                "运输设备制造业,38-电气机械和器材制造业,39-计算机、通信和其他电子设备制\n" +
//                "造业,40-仪器仪表制造业,41-其他制造业,42-废弃资源综合利用业,43-金属制品、\n" +
//                "机械和设备修理业,D-电力、热力、燃气及水生产和供应业,44-电力、热力生产\n" +
//                "和供应业,45-燃气生产和供应业,46-水的生产和供应业,E-建筑业,47-房屋建筑业\n" +
//                ",48-土木工程建筑业,49-建筑安装业,50-建筑装饰和其他建筑业,F-批发和零售业\n" +
//                ",51-批发业,52-零售业,G-交通运输、仓储和邮政业,53-铁路运输业,54-道路运输\n" +
//                "业,55-水上运输业,56-航空运输业,57-管道运输业,58-装卸搬运和运输代理业,59-\n" +
//                "仓储业,60-邮政业,H-住宿和餐饮业,61-住宿业,62-餐饮业,I-信息传输、软件和信\n" +
//                "息技术服务业,63-电信、广播电视和卫星传输服务,64-互联网和相关服务,65-软\n" +
//                "件和信息技术服务业,J-金融业,66-货币金融服务,67-资本市场服务,68-保险业,69-\n" +
//                "其他金融业,K-房地产业,70-房地产,L-租赁和商务服务业,71-租赁业,72-商务服务\n" +
//                "业,M-科学研究和技术服务业,73-研究和试验发展,74-专业技术服务业,75-科技推\n" +
//                "广和应用服务业,N-水利、环境和公共设施管理业,76-水利管理业,77-生态保护\n" +
//                "和环境治理业,78-公共设施管理业,O-居民服务、修理和其他服务业,79-居民服\n" +
//                "务业,80-机动车、电子产品和日用产品修理业,81-其他服务业,P-教育业,82-教育,"));
//        System.out.println(test1("100-内资企业，110-国有企业，120-集体企业，130-股份合作企业\n" +
//                "，140-联营企业，141-国有联营企业，142-集体联营企业，143-国有与集体联营\n" +
//                "企业，149-其他联营企业，150-有限责任公司，151-国有独资公司，159-其他有\n" +
//                "限责任公司，160-股份有限公司，170-私营企业，171-私营独资企业，172-私营\n" +
//                "合伙企业，173-私营有限责任公司，174-私营股份有限公司，190-其他企业\n" +
//                "，200-港、澳、台商投资企业，210-合资经营企业（港或澳、台资），220-合\n" +
//                "作经营企业（港或澳、台资），230-港、澳、台商独资经营企业，240-港、澳\n" +
//                "、台商投资股份有限公司，290-其他港、澳、台商投资企业，300-外商投资企\n" +
//                "业，310-中外合资经营企业，320-中外合作经营企业，330-外资企业，340-外商\n" +
//                "投资股份有限公司，390-其他外商投资企业，"));
//        String cnStr = "农、林、牧、渔业类产品";
        htmlTest();
//        System.out.println(cn2FirstSpell(cnStr));
//        System.out.println(cn2Spell(cnStr));
    }

    /**
     * md5+sha-1加密
     *
     * @param inputText 要加密的内容（明文密码+用户盐值）
     */
    public static String md5AndSha(String inputText) {
        return sha(md5(inputText));
    }

    /**
     * md5加密
     */
    public static String md5(String inputText) {
        return encrypt(inputText, "md5");
    }

    /**
     * sha加密
     */
    public static String sha(String inputText) {
        return encrypt(inputText, "sha-1");
    }


    /**
     * md5或者sha-1加密
     *
     * @param inputText     要加密的内容
     * @param algorithmName 加密算法名称：md5或者sha-1，不区分大小写
     */
    private static String encrypt(String inputText, String algorithmName) {
        if (inputText == null || "".equals(inputText.trim())) {
            throw new IllegalArgumentException("请输入要加密的内容");
        }
        if (algorithmName == null || "".equals(algorithmName.trim())) {
            algorithmName = "md5";
        }
        String encryptText = null;
        try {
            MessageDigest m = MessageDigest.getInstance(algorithmName);
            m.update(inputText.getBytes("UTF8"));
            byte[] s = m.digest();
            return hex(s);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return encryptText;
    }

    /**
     * 返回十六进制字符串
     */
    private static String hex(byte[] arr) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < arr.length; ++i) {
            sb.append(Integer.toHexString((arr[i] & 0xFF) | 0x100).substring(1, 3));
        }
        return sb.toString();
    }

    public static String test(String text) {
        int len = text.length();
        StringBuffer s = new StringBuffer();
        Pattern p = Pattern.compile("[A-Z]");
        String zimu = null;
        StringBuffer type = new StringBuffer();
        for (int i = 0; i < len; i++) {
            String a = text.substring(i, i + 1);
            Matcher d = p.matcher(a);
            if (d.find()) {
                s.append("(\"" + a + "\",\"");
                zimu = a;
                type = new StringBuffer();
                i = i + 2;
                while (true) {
                    a = text.substring(i, i + 1);
                    Pattern pattern = Pattern.compile("[\\u4E00-\\u9FA5]+");
                    Matcher zhongwen = pattern.matcher(a);
                    if (zhongwen.find()) {
                        s.append(a);
                        type.append(a);
                    }
                    if (a.contains("、")) {
                        s.append(a);
                        type.append(a);
                    }
                    if (a.contains(",")) {
                        i = i + 1;
                        a = text.substring(i, i + 1);
                        s.append("\",");
                        break;
                    }
                    i = i + 1;
                }
//                s.append("\"" + a);
                Pattern shuzi = Pattern.compile("[^[0-9]*[1-9][0-9]*$]");
                Matcher m = shuzi.matcher(a);
                if (m.find()) {
                    s.append("\"" + a);
                    i = i + 1;
                    a = text.substring(i, i + 1);
                    s.append(a + "\",\"");
                    i = i + 2;
                    while (true) {
                        a = text.substring(i, i + 1);
                        Pattern pattern = Pattern.compile("[\\u4E00-\\u9FA5]+");
                        Matcher zhongwen = pattern.matcher(a);
                        if (zhongwen.find()) {
                            s.append(a);
                        }
                        if (a.contains("、")) {
                            s.append(a);
                        }
                        if (a.contains(",")) {
                            s.append("\"),");
                            break;
                        }
                        i = i + 1;
                    }
                }
            } else {
//                s.append("\"" + a);
                Pattern shuzi = Pattern.compile("[^[0-9]*[1-9][0-9]*$]");
                Matcher m = shuzi.matcher(a);
                if (m.find()) {
                    s.append("(\"" + zimu + "\",\"" + type.toString() + "\",");
                    s.append("\"" + a);
                    i = i + 1;
                    a = text.substring(i, i + 1);
                    s.append(a + "\",\"");
                    i = i + 2;
                    while (true) {
                        a = text.substring(i, i + 1);
                        Pattern pattern = Pattern.compile("[\\u4E00-\\u9FA5]+");
                        Matcher zhongwen = pattern.matcher(a);
                        if (zhongwen.find()) {
                            s.append(a);
                        }
                        if (a.contains("、")) {
                            s.append(a);
                        }
                        if (a.contains(",")) {
                            s.append("\"),");
                            break;
                        }
                        i = i + 1;
                    }
                }
            }
        }
        return s.toString();
    }

    public static String test1(String text) {
        int len = text.length();
        StringBuffer s = new StringBuffer();
        Pattern shuzi = Pattern.compile("[^[0-9]*[1-9][0-9]*$]");
        for (int i = 0; i < len; i++) {
            String a = text.substring(i, i + 1);
            Matcher m = shuzi.matcher(a);
            if (m.find()) {
                a = text.substring(i, i + 3);
                s.append("(\"" + a + "\",\"");
                i = i + 4;
                while (true) {
                    a = text.substring(i, i + 1);
                    Pattern pattern = Pattern.compile("[\\u4E00-\\u9FA5]+");
                    Matcher zhongwen = pattern.matcher(a);
                    if (zhongwen.find()) {
                        s.append(a);
                    }
                    if (a.contains("、")) {
                        s.append(a);
                    }
                    if (a.contains("（") || a.contains("）")) {
                        s.append(a);
                    }
                    if (a.contains("，")) {
                        s.append("\"),");
                        break;
                    }
                    i = i + 1;
                }
            }
        }
        return s.toString();
    }

//    /**
//     * 获取汉字串拼音首字母，英文字符不变
//     *
//     * @param chinese 汉字串
//     * @return 汉语拼音首字母
//     */
//    public static String cn2FirstSpell(String chinese) {
//        StringBuffer pybf = new StringBuffer();
//        char[] arr = chinese.toCharArray();
//        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
//        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
//        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
//        for (int i = 0; i < arr.length; i++) {
//            if (arr[i] > 128) {
//                try {
//                    String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
//                    if (_t != null) {
//                        pybf.append(_t[0].charAt(0));
//                    }
//                } catch (BadHanyuPinyinOutputFormatCombination e) {
//                    e.printStackTrace();
//                }
//            } else {
//                pybf.append(arr[i]);
//            }
//        }
//        return pybf.toString().replaceAll("\\W", "").trim().toUpperCase();
//    }
//    /**
//     * 获取汉字串拼音，英文字符不变
//     *
//     * @param chinese 汉字串
//     * @return 汉语拼音
//     */
//    public static String cn2Spell(String chinese) {
//        StringBuffer pybf = new StringBuffer();
//        char[] arr = chinese.toCharArray();
//        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
//        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
//        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
//        for (int i = 0; i < arr.length; i++) {
//            if (arr[i] > 128) {
//                try {
//                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
//                } catch (BadHanyuPinyinOutputFormatCombination e) {
//                    e.printStackTrace();
//                }
//            } else {
//                pybf.append(arr[i]);
//            }
//        }
//        return pybf.toString();
//    }

//    ("C","制造业","13",农副食品加工业"),("C","制造业","14",食品制造业"),("C","制造业","15",酒、饮料和精制茶制造业"),("C","制造业","16",烟草制品业"),("C","制造业","17",纺织业"),("C","制造业","18",纺织服装、服饰业"),("C","制造业","19",皮革、毛皮、羽毛及其制品和制鞋业"),("C","制造业","20",木材加工和木、竹、藤、棕、草制品业"),("C","制造业","21",家具制造业"),("C","制造业","22",造纸和纸制品业"),("C","制造业","23",印刷和记录媒介复制业"),("C","制造业","24",文教、工美、体育和娱乐用品制造业"),("C","制造业","25",石油加工、炼焦和核燃料加工业"),("C","制造业","26",化学原料和化学制品制造业"),("C","制造业","27",医药制造业"),("C","制造业","28",化学纤维制造业"),("C","制造业","29",橡胶和塑料制品业"),("C","制造业","30",非金属矿物制品业"),("C","制造业","31",黑色金属冶炼和压延加工业"),("C","制造业","32",有色金属冶炼和压延加工业"),("C","制造业","33",金属制品业"),("C","制造业","34",通用设备制造业"),("C","制造业","35",专用设备制造业"),("C","制造业","36",汽车制造业"),("C","制造业","37",铁路、船舶、航空航天和其他运输设备制造业"),("C","制造业","38",电气机械和器材制造业"),("C","制造业","39",计算机、通信和其他电子设备制造业"),("C","制造业","40",仪器仪表制造业"),("C","制造业","41",其他制造业"),("C","制造业","42",废弃资源综合利用业"),("C","制造业","43",金属制品、机械和设备修理业"),("D","电力、热力、燃气及水生产和供应业"),"44",电力、热力生产和供应业"),("D","电力、热力、燃气及水生产和供应业"),"45",燃气生产和供应业"),("D","电力、热力、燃气及水生产和供应业"),"46",水的生产和供应业",("E","建筑业","47",房屋建筑业",("E","建筑业","48",土木工程建筑业",("E","建筑业","49",建筑安装业",("E","建筑业","50",建筑装饰和其他建筑业",("F","批发和零售业","51",批发业",("F","批发和零售业","52",零售业",("G","交通运输、仓储和邮政业","53",铁路运输业",("G","交通运输、仓储和邮政业","54",道路运输业",("G","交通运输、仓储和邮政业","55",水上运输业",("G","交通运输、仓储和邮政业","56",航空运输业",("G","交通运输、仓储和邮政业","57",管道运输业",("G","交通运输、仓储和邮政业","58",装卸搬运和运输代理业",("G","交通运输、仓储和邮政业","59",仓储业",("G","交通运输、仓储和邮政业","60",邮政业",("H","住宿和餐饮业","61",住宿业",("H","住宿和餐饮业","62",餐饮业",("I","信息传输、软件和信息技术服务业","63",电信、广播电视和卫星传输服务",("I","信息传输、软件和信息技术服务业","64",互联网和相关服务",("I","信息传输、软件和信息技术服务业","65",软件和信息技术服务业",("J","金融业","66",货币金融服务",("J","金融业","67",资本市场服务",("J","金融业","68",保险业",("J","金融业","69",其他金融业",("K","房地产业","70",房地产",("L","租赁和商务服务业","71",租赁业",("L","租赁和商务服务业","72",商务服务业",("M","科学研究和技术服务业","73",研究和试验发展",("M","科学研究和技术服务业","74",专业技术服务业",("M","科学研究和技术服务业","75",科技推广和应用服务业",("N","水利、环境和公共设施管理业","76",水利管理业",("N","水利、环境和公共设施管理业","77",生态保护和环境治理业",("N","水利、环境和公共设施管理业","78",公共设施管理业",("O","居民服务、修理和其他服务业","79",居民服务业",("O","居民服务、修理和其他服务业","80",机动车、电子产品和日用产品修理业",("O","居民服务、修理和其他服务业","81",其他服务业",("P","教育业","82",教育"）

    public static void htmlTest() throws IOException {
        File input = new File("C:\\Users\\weimi\\Desktop\\goods.html");
        Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
        Elements content = doc.getElementsByTag("tbody");
        for (Element link : content) {
            Elements tr = link.getElementsByTag("tr");
            for (Element link1 : tr) {
                Elements td = link1.getElementsByTag("td");
                System.out.print("update tb_invoice_taxcode set ");
                for (int i = 0; i < td.size(); i++) {
                    if (i == 1) {
                        Element div = td.get(i).getElementsByTag("div").get(0);
                        System.out.print("goods_abbr=\"" + div.text() + "\" where ");
                    }
                    if (i == 2) {
                        Element div = td.get(i).getElementsByTag("div").get(0);
                        System.out.print("goods_name=\"" + div.text() + "\"");
                    }
                }
                System.out.print(" and is_tax = 0;");
                System.out.println();
            }
        }
    }


}
